package com.suning.sawp.member.dao;

import java.util.List;

import com.suning.sawp.member.dto.CustomerDetail;
import com.suning.sawp.member.dto.MemCustomer;
import com.suning.sawp.member.dto.MemCustomerIntentCate;
import com.suning.sawp.member.dto.MemCustomerIntentCmmdty;
import com.suning.sawp.member.dto.MemFollowLog;

/**
 * 客户关联服务接口 〈一句话功能简述〉<br>
 * 〈功能详细描述〉
 *
 * @author 15050519
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface MemCustomerDao {

	/**
	 * 保存客户管理表 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param customer
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean saveMemCustomer(MemCustomer customer);

	/**
	 * 
	 * 保存会员详细信息
	 *
	 * @param customerDetail
	 * @return
	 */
	boolean saveMemCustomerDetail(CustomerDetail customerDetail);

	/**
	 * 保存意向品类品牌 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param cate
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean saveMemCustomerIntentCate(MemCustomerIntentCate cate);

	/**
	 * 保存意向商品 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param cmmdty
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean saveMemCustomerIntentCmmdty(MemCustomerIntentCmmdty cmmdty);

	/**
	 * 保存跟进记录 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param log
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean saveMemFollowLog(MemFollowLog log);

	/**
	 * 更新客户关联表 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param customer
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean updateMemCustomer(MemCustomer customer);

	/**
	 * 
	 * 更新会员详细信息
	 *
	 * @param customerDetail
	 * @return
	 */
	boolean updateMemCustomerDetail(CustomerDetail customerDetail);

	/**
	 * 更新意向品类品牌 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param cate
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean updateMemCustomerIntentCate(MemCustomerIntentCate cate);

	/**
	 * 更新意向商品 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param cmmdty
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean updateMemCustomerIntentCmmdty(MemCustomerIntentCmmdty cmmdty);

	/**
	 * 更新跟进记录 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param log
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean updateMemFollowLog(MemFollowLog log);

	/**
	 * 批量保存意向品类品牌 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param cates
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean batchSaveMemCustomerIntentCate(List<MemCustomerIntentCate> cates);

	/**
	 * 批量保存意向商品 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param cmmdtys
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean batchSaveMemCustomerIntentCmmdty(List<MemCustomerIntentCmmdty> cmmdtys);

	/**
	 * 批量更新客户详情
	 *
	 */
	boolean batchUpdateCustomerDetail(List<CustomerDetail> detailList);

	/**
	 * 批量更新客户表
	 */
	boolean batchUpdateCustomer(List<MemCustomer> customerList);

	/**
	 * 根据客户详情id,删除意向品类数据
	 *
	 * @param custDetailId
	 * @return
	 */
	boolean deleteIntentCateByDetailId(Long custDetailId);

	/**
	 * 根据客户详情id,删除意向商品数据
	 *
	 * @param custDetailId
	 * @return
	 */
	boolean deleteIntentCmmdtyByDetailId(Long custDetailId);

	/**
	 * 查询客户列表 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param storeCode
	 * @param staffId
	 * @param custName
	 * @param buyDateType
	 * @param isToday
	 * @param currIndex
	 * @param size
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<MemCustomer> queryMyCustomers(String storeCode, String staffId, String custName, String buyDateType, boolean isToday, int currIndex, int size);

	/**
	 * 查询客户关联信息 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param custId
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	MemCustomer getMemCustomer(Long custId);

	/**
	 * 查询客户详情信息 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param detailId
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	CustomerDetail getMemCustomerDetail(Long detailId);

	/**
	 * 查询客户意向品类列表 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param detailId
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<MemCustomerIntentCate> queryMemCustomerIntentCates(Long detailId);

	/**
	 * 查询客户意向商品列表 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param detailId
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<MemCustomerIntentCmmdty> queryMemCustomerIntentCmmdtys(Long detailId);

	/**
	 * 查询客户跟进记录列表 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param storeCode
	 * @param staffId
	 * @param custId
	 * @param currIndex
	 * @param size
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<MemFollowLog> queryCustomerFollowList(String storeCode, String staffId, Long custId, int currIndex, int size);

	/**
	 * 查询共享客户列表 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param storeCode
	 * @param currIndex
	 * @param size
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<MemCustomer> queryShareCustomerList(String storeCode, String employeeName, int currIndex, int size);

	/**
	 * 查询共享客户 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param storeCode
	 * @param custId
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	MemCustomer getShareCustomer(String storeCode, Long custId);

	/**
	 * 查询客户是否已发展
	 * 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param storeCode
	 * @param staffId
	 * @param custNo
	 * @param moblie
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	MemCustomer getMyCustomer(String storeCode, String staffId, String custNo, String mobile);
	
	/**
	 * 更新共享客户员工信息 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param custId
	 * @param staffId
	 * @param staffName
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean updateShareCustomer(Long custId, String staffId, String staffName);

	/**
	 * 更新客户详情员工工号信息 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param detailId
	 * @param staffId
	 * @param staffName
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	boolean updateCustomerDetail(Long detailId, String staffId, String staffName);

	/**
	 * 查询潜客列表 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param storeCode
	 * @param staffId
	 * @param currIndex
	 * @param size
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<MemCustomer> queryPotentialCustomerList(String storeCode, String staffId, int currIndex, int size);

	/**
	 * 插入潜客卡片信息 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	int dealPotentialCustomer();

	/**
	 * 修改员工客户为共享客户 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param staffId
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	int updateToShareCustomer(String staffId);

	/**
	 * 查询我的客户数量
	 * 
	 * @param staffId
	 * @return
	 */
	int countMyCustomer(String staffId);

	/**
	 * 查询今日待跟进的客户数量
	 * 
	 * @param staffId
	 * @return
	 */
	int countTodayWillFollowCustom(String staffId);
}
